﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WeChatBotSDK.JsonEx;

namespace WeChatBotSDK.Models.EventCallback
{
    public record EventData<T> : IWeChatEventData where T : class,new()
    {
        /// <summary>
        /// 数据类型，比如 recvMsg 表示接收消息。
        /// </summary>
        [JsonPropertyName("type")]
        public string Type { get; set; }

        /// <summary>
        /// 描述信息。
        /// </summary>
        [JsonPropertyName("des")]
        public string Description { get; set; }

        /// <summary>
        /// 消息数据。
        /// </summary>
        [JsonPropertyName("data")]
        public T Data { get; set; } = new T();

        /// <summary>
        /// 时间戳。
        /// </summary>
        [JsonPropertyName("timestamp")]
        public string Timestamp { get; set; }

        /// <summary>
        /// 当前事件所用微信 ID。
        /// </summary>
        [JsonPropertyName("wxid")]
        public string Wxid { get; set; }

        /// <summary>
        /// 使用的端口号。
        /// </summary>
        //[JsonConverter(typeof(IntConverter))]
        [JsonPropertyName("port")]
        public int Port { get; set; }

        /// <summary>
        /// 当前进程的 PID。
        /// </summary>
        //[JsonConverter(typeof(IntConverter))]
        [JsonPropertyName("pid")]
        public int Pid { get; set; }

        /// <summary>
        /// 事件标志。
        /// </summary>
        [JsonPropertyName("flag")]
        public string Flag { get; set; }
    }
}
